import { ADD1, MINUS1 } from "../action-types";
const actionCreators = {
  add1() {
    return { type: ADD1 };
  },
  minus1() {
    return { type: MINUS1 };
  },
  // 中间件 实现  action 为 异步函数
  thunkAdd1() {
    //现在此actionCreator返回的action是一个函数
    //redux规定派发的action必须是一个纯对象，不能是函数
    return function (dispatch, getState) {
      setTimeout(() => {
        dispatch(function (dispatch, getState) {
          setTimeout(() => {
            dispatch(
              new Promise((resolve) => {
                setTimeout(() => {
                  resolve({ type: ADD1 });
                }, 1000);
              })
            );
          }, 1000);
        });
      }, 1000);
    };
  },
  // 中间件 实现  action 为 promise ，但这种 promise 写法只能成功，不能失败，不常用
  promiseAdd1() {
    return new Promise((resolve) => {
      setTimeout(() => {
        resolve({ type: ADD1 });
      }, 1000);
    });
  },
  // 中间件 实现  action 为 promise，这种 promise 写法能成功，能失败
  payloadPromiseAdd1() {
    return {
      type: ADD1,
      payload: new Promise((resolve, reject) => {
        setTimeout(() => {
          let result = parseFloat(Math.random().toFixed(2));
          console.log("result", result);
          if (result > 0.5) {
            resolve(result);
          } else {
            reject(result);
          }
        }, 1000);
      }),
    };
  },
};
export default actionCreators;
